﻿// 整点巧克力.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//
/*
链接：https://ac.nowcoder.com/acm/contest/22353/1003
来源：牛客网

贝茜收到了n 块巧克力，第i 块巧克力能够提供给她hi 点快乐值。
贝茜的初始快乐值为
0 ，每天结束前她会按照计划吃下若干块巧克力并获得快乐值，第二天开始时，由于经过了一整晚的睡眠，快乐值会减半（向下取整）。
她想在接下来的d 天内合理安排食用计划，使得这段时间内每天的最小快乐值最大。特别的，她必须按照顺序依次吃巧克力；
每一天可以吃若干块巧克力、也可以不吃。
请你帮助她确定每一块巧克力都应该在哪一天吃掉，以使得这段时间内每天结束时的最小快乐值最大。
输入描述:
第一行输入两个整数
n,d(1≤n,d≤5×104) 代表巧克力的数量、你需要指定计划的天数。
第二行输入n 个整数
ℎ1,ℎ2,~~,ℎ𝑛(1≤ℎ𝑖≤106)代表每块巧克力的快乐值。
输出描述:
第一行输出一个整数，代表贝茜在这d 天内每天结束时的最小快乐值的最大值。
随后n 行，第i 行输出一个整数
𝑝𝑖(1≤𝑝𝑖≤𝑑)，代表第i 块巧克力应该在哪一天吃掉。这里的编号即输入顺序，从1 开始。

如果存在多个解决方案，您可以输出任意一个，系统会自动判定是否正确。注意，自测运行功能可能因此返回错误结果，请自行检查答案正确性。
示例1
输入
复制
5 5
10
40
13
22
7
输出
复制
24
1
1
3
4
5
说明
在这个样例中：
她将在第一天结束前吃掉前两块巧克力，这天的快乐值为10+40=50 ；
第二天开始时，快乐值减半为
50/2=25 ，而这一条她将不再额外吃巧克力，所以这天的快乐值就为25 ；

第三天开始时，快乐值减半为
25/2=12 ，与此同时她将吃掉第三块巧克力，这天的快乐值为12+13=25 ；
 
第四天开始时，快乐值减半为
25/2=12 ，与此同时她将吃掉第四块巧克力，这天的快乐值为12+22=34 ；

第五天开始时，快乐值减半为34/2 =17 ，与此同时她将吃掉第五块巧克力，这天的快乐值为17+7=24 ；
综上所述，贝茜在这5 天内每天结束时的最小快乐值为min{25,25,34,24}=24 ，我们可以证明这是最大的。
*/



#include <iostream>

int main()
{
    std::cout << "Hello World!\n";
}

 